To-do list for iCal Events

Feature List

[2.01] Add Verdana or Helvetica or sans-serif as alternatives to Helvetica Neue.

[2.1] Being taken to iCal when clicking on an event. Have it go to the right *date*, not the right event. Look at Konfabulator widget's source to see how to do this
[2.1] Scroll wheel
[2.1] Resizable window; square bottom corners; extended red space; info button on bottom. Get it working first with hard-coded sizes, then try to do the real resizer.
 - Truncate text proportionally based on window width
[2.1] "Location: xxx" at bottom of widget; top red bar and bottom red bar at same size.

[2.2] All-day events
 - Also: relative dates

[   ] PERFORMANCE: Do profiling

[3.0] Add support for todos (just show a bullet in place of the start time) and rename widget to iCal mini!!! (Design issue: "I would say to keep To Do items separate.  For me, to-do items are things I need to do "eventually" and not something I have set a schedule for.")

[3.0] Support Birthdays calendar introduced in iCal 2.0 (compile against Address Book framework)

[3.0] Support calendar groups?

Bugs
- Chamber Ensemble Recital, May 24, repeats 4 times instead of 3
- Monthly repeats should continue repeating if the day is invalid for the current month, so that events starting on May 31 will NOT show up in June but will continue showing up otherwise.
- Feb 29?
- Convert event times to the current time zone
- Check that time zones with spaces work correctly
// - Displays events even if they're hidden in iCal > Preferences > Advanced (read .plist file)
- Events that require addition of event at start date will go for one too many occurrences

Later
- Announcement on site about localization help: ask for "translators" or those with experience translating; require native speaker
- Load raw data from iCal or Sync Services when it's open; otherwise use ics files

- Clean up memory problems (copys, alloc-inits should have corresponding releases) -- do this one by one with large calendar date range to avoid stupid memory bugs
- Make sort ordering the same as in iCal
- Use Apple indeterminate progress bar animation on back while it's updating
- See if it works to take out [tmpDate copy] items (right before recursive calls) and other copied items
- Make private method names begin with _
- Only update if filesystem modification date shows it's needed
- Method to free dictionaries (memory saver)
- When updating calendar, use DTSTAMP or SEQUENCE to avoid re-expanding events that haven't changed
- Have plugin do date formatting using methods that take the date strings in, convert to dates, and return formatted date (rather than JavaScript); it should use user's int'l settings properly
- Handle malformed .ics files gracefully
- Handle full iCalendar standard
- Handle more value types